﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Xml.Linq;
using Comissoes.Models;
using Comissoes.Security;
using Comissoes.Utilities;

namespace Comissoes.Models
{
    public class PedidosVendaModel
    {
        private xcontEntities db = new xcontEntities();

        public PEDIDOS_VENDA pedido { get; set; }

        public SelectList CST { get; private set; }
        public SelectList ID_NTOP { get; private set; }
        public SelectList ID_NCM { get; private set; }
        public SelectList ID_UF { get; private set; }
        public SelectList COD_LISTA { get; private set; }
        public SelectList sitCOFINS { get; private set; }
        public SelectList sitTrib { get; private set; }
        public SelectList tCalculo { get; private set; }
        public SelectList tArma { get; private set; }
        public SelectList tItem { get; private set; }
        public SelectList condVeic { get; private set; }
        public SelectList espVeic { get; private set; }
        public SelectList tpComb { get; private set; }
        public SelectList tpOp { get; private set; }
        public SelectList tpVeic { get; private set; }
        public SelectList tpRest { get; private set; }
        public SelectList VIN { get; private set; }

        public PedidosVendaModel()
        {
            this.pedido = new PEDIDOS_VENDA();
            this.CreateSelectLists();
        }

        public PedidosVendaModel(String NUMERO_PDVD)
        {
            this.pedido = db.PEDIDOS_VENDA.FirstOrDefault(t => t.NUMERO_PDVD == NUMERO_PDVD);
            this.CreateSelectLists();
        }

        public List<String> Validate(FormCollection form)
        {
            List<String> erros = new List<string>();

            return erros;
        }

        /// <summary>
        /// Define o status atual do pedido
        /// </summary>
        /// <param name="tipo">A - Orçamento
        ///                    B - Em transito
        ///                    C - Confirmado
        ///                    D - Cancelado
        ///                    E - Finalizado</param>
        public void UpdateStatus(String tipo, FormCollection form)
        {
            this.pedido.STATUS_PDVD = tipo;

            switch (tipo)
            {
                case "C":
                    this.pedido.VENDAS = UpdateVenda(form);
                    UpdateNf(form);
                    break;
                case "D":

                    break;
                case "E":
                    this.pedido.VENDAS = UpdateVenda(form);
                    break;
            }

            this.SaveChanges();
        }

        public void GerarNumeroSeriePedido(Int32 COD_LOJA)
        {
            String numero = "1";
            Int32 serie = 1;

            if (db.PEDIDOS_VENDA.Any(t => t.VENDAS.LOJAS.COD_LOJA == COD_LOJA))
            {
                PEDIDOS_VENDA p = db.PEDIDOS_VENDA.Where(t => t.VENDAS.LOJAS.COD_LOJA == COD_LOJA).OrderByDescending(t => t.ID_PDVD).First();

                if (p.NUMERO_PDVD == "999999999")
                {
                    serie = (int)p.SERIE_PDVD++;
                }
                else
                {
                    numero = (Int64.Parse(p.NUMERO_PDVD) + 1).ToString();
                    serie = (int)p.SERIE_PDVD;
                }
            }

            this.pedido.NUMERO_PDVD = numero.PadLeft(9, '0');
            this.pedido.SERIE_PDVD = serie;
        }

        public List<String> Update(FormCollection form)
        {
            List<String> erros = new List<String>();

            if (!db.PEDIDOS_VENDA.Any(t => t.ID_PDVD == this.pedido.ID_PDVD)) db.AddToPEDIDOS_VENDA(this.pedido);

            if (Validations.Data(form["EMISSAO_PDVD"])) this.pedido.EMISSAO_PDVD = DateTime.Parse(form["EMISSAO_PDVD"]);
            if (Validations.Inteiro(form["COD_LISTA"])) this.pedido.LISTAS = db.LISTAS.FirstOrDefault(t => t.COD_LISTA == Int32.Parse(form["COD_LISTA"]));
            this.pedido.MENSAGEM_PDVD = form["MENSAGEM_PDVD"];
            this.pedido.OBS_PDVD = form["OBS_PDVD"];
            if (Validations.Decimal(form["PBRUTO_PDVD"])) this.pedido.PBRUTO_PDVD = Decimal.Parse(form["PBRUTO_PDVD"]);
            if (Validations.Decimal(form["PLIQ_PDVD"])) this.pedido.PLIQ_PDVD = Decimal.Parse(form["PLIQ_PDVD"]);
            if (Validations.Data(form["SAIDA_PDVD"])) this.pedido.SAIDA_PDVD = DateTime.Parse(form["SAIDA_PDVD"]);
            this.pedido.TIPO_PDVD = form["TIPO_PDVD"];

            erros.Union(this.SaveChanges());
            return erros;
        }

        private VENDAS UpdateVenda(FormCollection form)
        {
            VENDAS venda;

            if (this.pedido.VENDAS == null)
            {
                venda = new VENDAS();
                db.AddToVENDAS(venda);
                venda.OPERADORES = Access.User;

                this.pedido.VENDAS = venda;
            }
            else
            {
                venda = this.pedido.VENDAS;
            }

            if (Validations.Data(form["DATA_VDA"])) venda.DATA_VDA = DateTime.Parse(form["DATA_VDA"]);
            if (Validations.Inteiro(form["COD_VEND"])) venda.VENDEDORES = db.VENDEDORES.FirstOrDefault(t => t.COD_VEND == Int32.Parse(form["COD_VEND"]));
            if (Validations.Inteiro(form["COD_CLI"])) venda.CLIENTES = db.CLIENTES.FirstOrDefault(t => t.COD_CLI == Int32.Parse(form["COD_CLI"]));
            if (Validations.Inteiro(form["ENPS_RET"])) venda.ENDERECO_RETIRADA = db.ENDERECOS_PESSOA.FirstOrDefault(t => t.ID_ENPS == Int32.Parse(form["ENPS_RET"]));
            if (Validations.Inteiro(form["ENPS_ENTR"])) venda.ENDERECO_ENTREGA = db.ENDERECOS_PESSOA.FirstOrDefault(t => t.ID_ENPS == Int32.Parse(form["ENPS_ENTR"]));
            if (Validations.Inteiro(form["COD_LOJA"])) venda.LOJAS = db.LOJAS.FirstOrDefault(t => t.COD_LOJA == Int32.Parse(form["COD_LOJA"]));
            if (Validations.Inteiro(form["ID_NTOP"])) venda.NATUREZAS_OPERACAO = db.NATUREZAS_OPERACAO.FirstOrDefault(t => t.ID_NTOP == Int32.Parse(form["ID_NTOP"]));

            SaveChanges();

            UpdateTotalVenda(form);

            return venda;
        }

        private void UpdateTotalVenda(FormCollection form)
        {
            if (this.pedido.VENDAS != null && db.ITENS_VENDA.Any(t => t.VENDAS.ID_VDA == this.pedido.VENDAS.ID_VDA))
            {
                IQueryable<ITENS_VENDA> itens = db.ITENS_VENDA.Where(t => t.VENDAS.ID_VDA == this.pedido.VENDAS.ID_VDA);

                VENDAS venda = db.VENDAS.FirstOrDefault(t => t.ID_VDA == this.pedido.VENDAS.ID_VDA);

                if (Validations.Decimal(form["ACRESCIMO_VDA"])) venda.ACRESCIMO_VDA = Decimal.Parse(form["ACRESCIMO_VDA"]);
                if (Validations.Decimal(form["SERVICO_VDA"])) venda.SERVICO_VDA = Decimal.Parse(form["SERVICO_VDA"]);
                if (Validations.Decimal(form["TXENTR_VDA"])) venda.TXENTR_VDA = Decimal.Parse(form["TXENTR_VDA"]);

                venda.BICMS_VDA = itens.Sum(t => t.QTDE_ITVD * t.PRODUTOS_LISTA.PRECO_PDLS) ?? 0;
                venda.BICMSST_VDA = itens.Sum(t =>  (t.QTDE_ITVD * t.PRODUTOS_LISTA.PRECO_PDLS)) ?? 0;
                venda.BISSQN_VDA = itens.Sum(t => (t.PRODUTOS_LISTA.ISSQN_PDLS ?? 0) * (t.QTDE_ITVD * t.PRODUTOS_LISTA.PRECO_PDLS)) ?? 0;
                venda.COFINS_VDA = itens.Sum(t => t.COFINS_ITVD) ?? 0;
                venda.DESCONTO_VDA = itens.Sum(t => t.DESCONTO_ITVD) ?? 0;
                venda.ICMS_VDA = itens.Sum(t => t.ICMS_ITVD) ?? 0;
                venda.II_VDA = itens.Sum(t => t.II_ITVD) ?? 0;
                venda.IPI_VDA = itens.Sum(t => t.IPI_ITVD) ?? 0;
                venda.ISSQN_VDA = itens.Sum(t => t.ISSQN_ITVD) ?? 0;
                venda.PIS_VDA = itens.Sum(t => t.PIS_ITVD) ?? 0;
                venda.SEGURO_VDA = itens.Sum(t => t.SEGURO_ITVD) ?? 0;

                venda.VLRMERC_VDA = itens.Sum(t => t.QTDE_ITVD * t.PRODUTOS_LISTA.PRECO_PDLS);
                venda.VLRTOT_VDA = venda.VLRTOT_VDA +
                                    venda.ICMS_VDA +
                                    venda.ICMSST_VDA +
                                    venda.II_VDA +
                                    venda.IPI_VDA +
                                    venda.ISSQN_VDA +
                                    venda.PIS_VDA +
                                    venda.SEGURO_VDA -
                                    venda.DESCONTO_VDA;
            }
        }

        private List<String> ValidateItenVenda(FormCollection form, Int32? ID_ITVD)
        {
            List<String> erros = new List<string>();

            if (string.IsNullOrEmpty(form["QTDE_ITVD"])) erros.Add("É necessário informar a quantidade do item.");
            if (string.IsNullOrEmpty(form["COD_PROD"])) erros.Add("É necessário informar o código do item.");

            if (form["tTributo"].Equals("A"))
            {
                if (String.IsNullOrEmpty(form["ICMS_ITVD"]) && String.IsNullOrEmpty(form["ICMSST_ITVD"])) erros.Add("É necessário informar o Icms ou IcmsST do item.");
            }
            else
            {
                if (String.IsNullOrEmpty(form["ISSQN_ITVD"])) erros.Add("É necessário informar o Issqn do item.");
            }

            return erros;
        }

        private ITENS_VENDA UpdateItenVenda(FormCollection form, Int32? ID_ITVD)
        {
            ITENS_VENDA iten;
            PRODUTOS_LISTA produto = db.PRODUTOS_LISTA.FirstOrDefault(t => t.PRODUTOS.COD_PROD == Convertions.Inteiro(form["COD_PROD"]));

            if (ID_ITVD.HasValue)
            {
                iten = db.ITENS_VENDA.FirstOrDefault(t => t.ID_ITVD == ID_ITVD);
            }
            else
            {
                iten = new ITENS_VENDA
                {
                    VENDAS = this.UpdateVenda(form),
                    ITEM_ITVD = db.ITENS_VENDA.Count(t => t.VENDAS.ID_VDA == this.pedido.VENDAS.ID_VDA) + 1
                };
                db.AddToITENS_VENDA(iten);
            }

            iten.VENDEDORES = db.VENDEDORES.FirstOrDefault(t => t.COD_VEND == Convertions.Inteiro(form["COD_VEND"]));
            
            iten.QTDE_ITVD = Convertions.Decimal(form["QTDE_ITVD"]);
            iten.QTDEENT_ITVD = Convertions.Decimal(form["QTDEENT_ITVD"]);
            iten.DESCONTO_ITVD = Convertions.Decimal(form["DESCONTO_ITVD"]);
            iten.DESP_ACESSORIA_ITVD = Convertions.Decimal(form["DESP_ACESSORIA_ITVD"]);
            iten.FRETE_ITVD = Convertions.Decimal(form["FRETE_ITVD"]);
            iten.INDTOT_ITVD = form["INDTOT_ITVD"].Contains("true") ? 0 : 1;

            if (!String.IsNullOrEmpty(form["MICMS_ITVD"]))
            {
                iten.ICMS_ITVD = Convertions.Decimal(form["ICMS_ITVD"]);
                iten.BICMS_ITVD = Convertions.Decimal(form["BICMS_ITVD"]);
                iten.MICMS_ITVD = form["MICMS_ITVD"];
                iten.MVAICMSST_ITVD = Convertions.Decimal(form["MVAICMSST_ITVD"]);
                iten.OICMS_ITVD = form["OICMS_ITVD"];
                iten.OPICMS_ITVD = Convertions.Decimal(form["OPICMS_ITVD"]);
                iten.PICMS_ITVD = Convertions.Decimal(form["PICMS_ITVD"]);
                iten.RICMS_ITVD = Convertions.Decimal(form["RICMS_ITVD"]);
                iten.SICMS_ITVD = form["SICMS_ITVD"];
            }

            if (!String.IsNullOrEmpty(form["SCOFINS_ITVD"]))
            {
                iten.COFINS_ITVD = Convertions.Decimal(form["COFINS_ITVD"]);
                iten.BCOFINS_ITVD = Convertions.Decimal(form["BCOFINS_ITVD"]);
                iten.PCOFINS_ITVD = Convertions.Decimal(form["PCOFINS_ITVD"]);
                iten.QCOFINS_ITVD = Convertions.Decimal(form["QCOFINS_ITVD"]);
                iten.SCOFINS_ITVD = form["SCOFINS_ITVD"];
                iten.TCOFINS_ITVD = form["TCOFINS_ITVD"];
                iten.VCOFINS_ITVD = Convertions.Decimal(form["VCOFINS_ITVD"]);
            }

            if (!String.IsNullOrEmpty(form["SPIS_ITVD"]))
            {
                iten.PIS_ITVD = Convertions.Decimal(form["PIS_ITVD"]);
                iten.BPIS_ITVD = Convertions.Decimal(form["BPIS_ITVD"]);
                iten.PPIS_ITVD = Convertions.Decimal(form["PPIS_ITVD"]);
                iten.QPIS_ITVD = Convertions.Decimal(form["QPIS_ITVD"]);
                iten.SPIS_ITVD = form["SPIS_ITVD"];
                iten.TPIS_ITVD =form["TPIS_ITVD"];
                iten.VPIS_ITVD = Convertions.Decimal(form["VPIS_ITVD"]);
            }

            if (!String.IsNullOrEmpty(form["SIPI_ITVD"]))
            {
                iten.IPI_ITVD = Convertions.Decimal(form["IPI_ITVD"]);
                iten.BIPI_ITVD = Convertions.Decimal(form["BIPI_ITVD"]);
                iten.PIPI_ITVD = Convertions.Decimal(form["PIPI_ITVD"]);
                iten.QIPI_ITVD = Convertions.Decimal(form["QIPI_ITVD"]);
                iten.QSELOIPI_ITVD = Convertions.Inteiro(form["QSELOIPI_ITVD"]);
                iten.SELOIPI_ITVD = form["SELOIPI_ITVD"];
                iten.SIPI_ITVD = form["SIPI_ITVD"];
                iten.TIPI_ITVD = form["TIPI_ITVD"];
                iten.VIPI_ITVD = Convertions.Decimal(form["VIPI_ITVD"]);
            }

            if (!String.IsNullOrEmpty(form["ISSQN_ITVD"]))
            {
                iten.CIDADES = db.CIDADES.FirstOrDefault(t => t.ID_CID == Convertions.Inteiro(form["ID_CID_ISSQN_ITVD"]));
                iten.ISSQN_ITVD = Convertions.Decimal(form["ISSQN_ITVD"]);
                iten.BISSQN_ITVD = Convertions.Decimal(form["BISSQN_ITVD"]);
                iten.PISSQN_ITVD = Convertions.Decimal(form["PISSQN_ITVD"]);
                iten.SEGURO_ITVD = Convertions.Decimal(form["SEGURO_ITVD"]);
                iten.TISSQN_ITVD = form["TISSQN_ITVD"];
            }

            if (!String.IsNullOrEmpty(form["IOFII_ITVD"]))
            {
                iten.II_ITVD = Convertions.Decimal(form["II_ITVD"]);
                iten.BII_ITVD = Convertions.Decimal(form["BII_ITVD"]);
                iten.DESPADUII_ITVD = Convertions.Decimal(form["DESPADUII_ITVD"]);
                iten.IOFII_ITVD = Convertions.Decimal(form["IOFII_ITVD"]);
            }

            SaveChanges();

            return iten;
        }

        public List<String> DeleteItemVenda(Int32? ID_ITVD)
        {
            List<String> erros = new List<string>();

            try
            {
                ITENS_VENDA iten = db.ITENS_VENDA.FirstOrDefault(t => t.ID_ITVD == ID_ITVD);
                db.DeleteObject(iten);

                foreach (ITENS_VENDA i in db.ITENS_VENDA.Where(t => t.VENDAS.ID_VDA == iten.VENDAS.ID_VDA && t.ITEM_ITVD > iten.ITEM_ITVD))
                {
                    i.ITEM_ITVD--;
                }

                db.SaveChanges();
            }
            catch (Exception ex)
            {
                erros.Add(ex.Message);
                if (ex.InnerException != null)
                    erros.Add(ex.InnerException.Message);
            }

            return erros;
        }

        private NOTAS_FISCAIS UpdateNf(FormCollection form)
        {
            NOTAS_FISCAIS nf = new NOTAS_FISCAIS();

            if (this.pedido.NOTAS_FISCAIS == null)
            {
                db.AddToNOTAS_FISCAIS(nf);
                nf.PEDIDOS_VENDA.Add(this.pedido);
            }

            SaveChanges();

            return nf;
        }

        public List<String> SaveChanges()
        {
            List<String> erros = new List<string>();

            try
            {
                db.SaveChanges();
            }
            catch (Exception ex)
            {
                erros.Add(ex.Message);
                if (ex.InnerException != null)
                    erros.Add(ex.InnerException.Message);
            }

            return erros;
        }        

        private void CreateSelectLists()
        {
            xcontEntities db = new xcontEntities();

            if (this.pedido.VENDAS == null)
                this.ID_NTOP = new SelectList(db.NATUREZAS_OPERACAO.Where(t => t.ATIVO_NTOP == "A"), "ID_NTOP", "DESC_NTOP");
            else
                this.ID_NTOP = new SelectList(db.NATUREZAS_OPERACAO.Where(t => t.ATIVO_NTOP == "A"), "ID_NTOP", "DESC_NTOP", this.pedido.VENDAS.NATUREZAS_OPERACAO.ID_NTOP);

            this.ID_NCM = new SelectList(db.NCM.Where(t => t.ATIVO_NCM == "A"), "ID_NCM", "DESC_NCM");
            this.ID_UF = new SelectList(db.UFS, "ID_UF", "SIGLA_UF");
            this.COD_LISTA = new SelectList(db.LISTAS, "COD_LISTA", "DESC_LISTA");

            List<SelectListItem> tItem = new List<SelectListItem>
            {
                new SelectListItem { Text = "Armamento", Value = "arma" },
                new SelectListItem { Text = "Combustível", Value = "comb" },
                new SelectListItem { Text = "Medicamento", Value = "med" },
                new SelectListItem { Text = "Veículo", Value = "veic" }
            };

            List<SelectListItem> tArma = new List<SelectListItem>
            {
                new SelectListItem{ Value = "0", Text = "Uso Permitido" },
                new SelectListItem{ Value = "1", Text = "Uso Restrito" }
            };

            List<SelectListItem> CST = new List<SelectListItem> {
                new SelectListItem { Value = "04", Text = "Operação Tributável(tributação monofásica(alíquota zero))" },
                new SelectListItem { Value = "06", Text = "Operação Tributável(alíquota zero)" },                
                new SelectListItem { Value = "07", Text = "Operação Isenta da Contribuição" },
                new SelectListItem { Value = "08", Text = "Operação Sem Incidênciada Contribuição" },
                new SelectListItem { Value = "09", Text = "Operação com Suspensãoda Contribuição" }
            };

            List<SelectListItem> tCalculo = new List<SelectListItem> {
                new SelectListItem { Value = "A", Text = "Percentual" },
                new SelectListItem { Value = "B", Text = "Em valor" }
            };

            List<SelectListItem> sitTrib = new List<SelectListItem> {
                new SelectListItem { Value = "00", Text = "Integral" },
                new SelectListItem { Value = "10", Text = "Substituição tributária" },                
                new SelectListItem { Value = "20", Text = "Redução da base de cálculo" },
                new SelectListItem { Value = "30", Text = "Isenta com substituição tributária" },
                new SelectListItem { Value = "40", Text = "Isenta" },
                new SelectListItem { Value = "51", Text = "Não tributada" },                
                new SelectListItem { Value = "50", Text = "Suspensão" },
                new SelectListItem { Value = "51", Text = "Diferimento" },
                new SelectListItem { Value = "60", Text = "Cobrado anteriormente por substiuição tributária" },
                new SelectListItem { Value = "70", Text = "Redução da base de cálculo e cobrança por substiuição tributária" },                
                new SelectListItem { Value = "90", Text = "Outras" }
            };

            List<SelectListItem> condVeic = new List<SelectListItem> {
                new SelectListItem { Value = "1", Text = "Acabado" },
                new SelectListItem { Value = "2", Text = "Inacabado" },
                new SelectListItem { Value = "3", Text = "Semi-acabado" }
            };

            List<SelectListItem> espVeic = new List<SelectListItem> {
                new SelectListItem { Value = "1", Text = "PASSAGEIRO" },
                new SelectListItem { Value = "2", Text = "CARGA" },
                new SelectListItem { Value = "3", Text = "MISTO" },
                new SelectListItem { Value = "4", Text = "CORRIDA" },
                new SelectListItem { Value = "5", Text = "TRAÇÃO" },
                new SelectListItem { Value = "6", Text = "ESPECIAL" }
            };

            List<SelectListItem> tpComb = new List<SelectListItem> {
                new SelectListItem { Value = "01", Text = "Álcool" },
                new SelectListItem { Value = "02", Text = "Gasolina" },
                new SelectListItem { Value = "03", Text = "Diesel" },
                new SelectListItem { Value = "16", Text = "Álcool/Gasolina" },
                new SelectListItem { Value = "17", Text = "Gasolina/Álcool/GNV" },
                new SelectListItem { Value = "18", Text = "Gasolina/Elétrico" }
            };

            List<SelectListItem> tpOp = new List<SelectListItem> {
                new SelectListItem { Value = "1", Text = "Venda concessionária" },
                new SelectListItem { Value = "2", Text = "Consumidor final" },
                new SelectListItem { Value = "3", Text = "Grandes consumidores (frotista, governo...)"},
                new SelectListItem { Value = "0", Text = "Outros" }
            };

            List<SelectListItem> tpRest = new List<SelectListItem> {
                new SelectListItem { Value = "0", Text = "Não há" },
                new SelectListItem { Value = "1", Text = "Alienação Fiduciária" },
                new SelectListItem { Value = "2", Text = "Arrendamento Mercantil" },
                new SelectListItem { Value = "3", Text = "Reserva de Domínio" },
                new SelectListItem { Value = "4", Text = "Penhor de Veículos" },
                new SelectListItem { Value = "9", Text = "Outras" }
            };

            List<SelectListItem> tpVeic = new List<SelectListItem> {
                new SelectListItem { Value = "06", Text = "Automóvel" },
                new SelectListItem { Value = "14", Text = "CAMINHÃO" },
                new SelectListItem { Value = "13", Text = "CAMINHONETA" },
                new SelectListItem { Value = "24", Text = "CARGA / CAM" },
                new SelectListItem { Value = "02", Text = "CICLOMOTO" },
                new SelectListItem { Value = "22", Text = "ESP / ÔNIBUS" },
                new SelectListItem { Value = "07", Text = "MICROÔNIBUS" },
                new SelectListItem { Value = "23", Text = "MISTO / CAM" },
                new SelectListItem { Value = "04", Text = "MOTOCICLO" },
                new SelectListItem { Value = "03", Text = "MOTONETA" },
                new SelectListItem { Value = "08", Text = "ÔNIBUS" },
                new SelectListItem { Value = "10", Text = "REBOQUE" },
                new SelectListItem { Value = "05", Text = "TRICICLO" },
                new SelectListItem { Value = "17", Text = "C. TRATOR" }
            };

            List<SelectListItem> VIN = new List<SelectListItem> {
                new SelectListItem { Value = "N", Text = "Normal" },
                new SelectListItem { Value = "R", Text = "Remarcado" }
            };

            List<SelectListItem> sitCOFINS = new List<SelectListItem> {
                new SelectListItem { Value = "N", Text = "Normal" },
                new SelectListItem { Value = "R", Text = "Remarcado" }
            };

            this.condVeic = new SelectList(condVeic, "Value", "Text");
            this.espVeic = new SelectList(espVeic, "Value", "Text");
            this.tpComb = new SelectList(tpComb, "Value", "Text");
            this.tpOp = new SelectList(tpOp, "Value", "Text");
            this.tpVeic = new SelectList(tpVeic, "Value", "Text");
            this.tpRest = new SelectList(tpRest, "Value", "Text");
            this.VIN = new SelectList(VIN, "Value", "Text");
            this.CST = new SelectList(CST, "Value", "Text");
            this.sitTrib = new SelectList(sitTrib, "Value", "Text");
            this.sitCOFINS = new SelectList(sitCOFINS, "Value", "Text");
            this.tArma = new SelectList(tArma, "Value", "Text");
            this.tCalculo = new SelectList(tCalculo, "Value", "Text");
            this.tItem = new SelectList(tItem, "Value", "Text");
        }
    }
}
